package com.test.component;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

/**
 * 拦截器，登录检查
 */
public class LoginInterceptor implements HandlerInterceptor  {
	// 目标方法执行之前
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
      System.out.println("执行了TestInterceptor的preHandle方法");
      try {
          //统一拦截（查询当前session是否存在user）(这里user会在每次登陆成功后，写入session)
          Object user = request.getSession().getAttribute("USER");
          if(user!=null){
              return true;
          }
          response.sendRedirect(request.getContextPath()+"login");
      } catch (IOException e) {
          e.printStackTrace();
      }
      return false;//如果设置为false时，被请求时，拦截器执行到此处将不会继续操作
                    //如果设置为true时，请求将会继续执行后面的操作
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    	System.out.println("执行了TestInterceptor的postHandle方法");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    	System.out.println("执行了TestInterceptor的afterCompletion方法");
    }
}
